
const getToday = () => {
    const date = new Date()
    const year = date.getFullYear()
    const month = String(date.getMonth() + 1).padStart(2, '0') // 月份从0开始，需要+1
    const day = String(date.getDate()).padStart(2, '0')

    return `${year}-${month}-${day}`
}

const normalizeDate = (dateStr, isNull = false) => {

    if (dateStr === undefined) return ''


    // 处理 "25.5.25" 或 "25.05.05" 格式（假设是 yy.mm.dd 或 yy.m.d）
    if (dateStr.includes('.')) {
        const parts = dateStr.split('.')
        let year = parseInt(parts[0])
        let month = parseInt(parts[1])
        let day = parseInt(parts[2])

        // 处理两位数的年份（假设2000年以后）
        year = year < 100 ? 2000 + year : year;

        return `${year}-${String(month).padStart(2, '0')}-${String(day).padStart(2, '0')}`
    }

    // 处理 "2025年05月25日" 格式
    if (dateStr.includes('年')) {
        const match = dateStr.match(/(\d{4})年(\d{1,2})月(\d{1,2})日/)
        if (match) {
            const year = match[1]
            const month = String(match[2]).padStart(2, '0')
            const day = String(match[3]).padStart(2, '0')
            return `${year}-${month}-${day}`
        }
    }

    // 处理 "2025-05-25" 格式（已经是目标格式）
    if (/^\d{4}-\d{2}-\d{2}$/.test(dateStr)) {
        return dateStr
    }


    // 处理yyyymmdd格式，如20230525
    if (/^\d{8}$/.test(Number(dateStr))) {
        // 2. 提取年、月、日
        const year = dateStr.slice(0, 4)
        const month = dateStr.slice(4, 6)
        const day = dateStr.slice(6, 8)

        // 3. 验证日期有效性（可选）
        const date = new Date(`${year}-${month}-${day}`)
        if (isNaN(date.getTime())) return getToday(); // 非法日期返回今天

        // 4. 返回 yyyy-mm-dd 格式
        return `${year}-${month}-${day}`
    }

    // 检查是否符合 yyyy-mm-dd hh:mm:ss 格式
    if (/^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}$/.test(dateStr)) {
        return dateStr.slice(0, 10) // 提取前10位（yyyy-mm-dd）
    }


    // 如果都没有，返回今天
    if (!isNull) {
        return getToday()
    } else {
        return ''
    }
}

export default normalizeDate